With adaptive streaming technology, audio-video streams are divided into small files that are transmitted, in order, over a unicast connection (e.g., an HTTP connection) from a server to a client device. A typical client media application instantiates a socket and sets a receive buffer size (e.g., a TCP socket and a TCP receive buffer size). The client media application then submits a request (e.g., an HTTP GET request) for a first portion of a particular audio-video stream. In response to the request, the server sends a first portion of the requested audio-video stream, which is received by the client device through the socket, into the receive buffer. The data in the receive buffer may then be processed by a networking stack, from which the client media application receives the audio-video stream. Upon reading all of the received data from the networking stack, the client media application issues a second request (e.g., an HTP GET request) for a second portion of the particular audio-video stream. This process continues until the full audio-video stream has been requested and received.
In systems with sufficient resources for large receive buffers and/or multiple sockets, this process works well. However, for client devices with limited resources, the network conditions and the distance between the client device and the server may result in considerable latency between two sequential requests. Such latency may severely impact an amount of buffered data that is available to the client media application, limiting the client media application's ability to provide smooth, quality playback of the audio-video stream. The client media application's ability to provide smooth, quality playback of the audio-video stream may be further impacted when the client device is configured for bit rate control, limiting the amount of bandwidth that the client media application is allowed to access. Waiting until all of the received data has been read from the network stack before issuing a subsequent request also results in significant network bursts, which are typically undesirable.